iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
1
自我挑戰組

ROS自學筆記系列 第 14

Day 14 - ROS Topic 常用指令 & ROS Graph

  • 分享至 

  • xImage
  •  

Topic系列告一段落啦,我們再來分享一些常用指令,還有好用的rqt_graph指令:

rostopic list

$ rostopic list

這個指令基本上我們之前用過啦,也跟rosnode list一樣,就是列出目前運行中的topic有哪些。

rostopic info

$ rostopic info <topic_name>

這個指令就是關於某個topic的詳細資料啦! 由下圖執行畫面可以看到我們之前寫的/chatter這個topic,需要輸入的訊息格式是std_msgs/String,可以由/talker發佈訊息,然後由/listener監聽。
rostopic info執行畫面

rostopic echo

$ rostopic echo <topic_name>

接下來這個指令比較重要啦,就是去監聽某個topic,也就是在我們寫完publisher以後可以用的debug工具,在前幾天寫publisher的時候已經用過啦,我就不再截圖囉!

rostopic pub

$ rostopic pub <topic-name> <topic-type> [data...]

這個指令跟echo是相對的,也就是充當publisher的指令,負責對某個topic發送訊息,可以在我們寫完subscriber以後debug用。
rostopic pub執行畫面
可以看到我發送了一條hello from command line訊息,而我的/listener也確實收到囉!

ROS Graph

講完Topic,接著來講一下Graph。ROS的資料結構是使用圖形(graph)的方式,並且提供一個好用的圖形化工具,可以看出每個node的連結狀況:

$ rosrun rqt_graph rqt_graph
$ rqt_graph

這兩個指令都可以執行,叫出我們的圖形化畫面:
rqt_graph執行畫面
可以看到我們有兩組的talkerlistener,後面有亂數的是python產生的node,每個talker都連結到另外兩個listener,並且透過chatter這個topic傳輸資料。

但大家會不會覺得很奇怪,這個rqt_graph怎麼看就也像是某個node啊,怎麼沒有出現在圖形上呢?
這時候就要把上面的指令中的debug關掉,就可以看到隱藏的node囉!
關掉debug之後的畫面
是不是突然變得很複雜啊? 其實就只是多了一個rqt_gui_py_noderosout,並且每個node都會連到rosout而已,因為rosout是負責輸出錯誤訊息的node嘛! 所以如果node遇到甚麼狀況的時候,就會發送訊息到rosouttopic中,並由rosoutnode接收下來,差不多就是這樣啦!
rqt_graph在大型專案中應該會蠻好用的,可以輕易看出node之間的連結性。

參考資料

ROS wiki - rostopic
ROS tutorials- understanding Topics
ROS wiki - rqt_graph


上一篇
Day 13 - 使用C++撰寫Subscriber
下一篇
Day 15 - ROS Services
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言